/**
 * APIFM 微信小程序 API 接口库
 * 详细的接口说明和数据类型定义
 * https://github.com/gooking/wxapi
 */

// 以下是对原 index.js 文件中所有API接口的详细注释说明

/**
 * ========== 系统配置相关接口 ==========
 */

/**
 * queryConfigValue
 * @description 查询单个系统配置值
 * @param {string} key - 配置项键名
 * @returns {Promise<Object>} 返回格式:
 * {
 *   code: 0,           // 状态码，0表示成功
 *   data: {
 *     key: "mallName", // 配置项键名
 *     value: "商城名称" // 配置项值
 *   }
 * }
 */

/**
 * queryConfigBatch
 * @description 批量查询系统配置项
 * @param {string} keys - 逗号分隔的配置项键名，如 'mallName,mylogo,myname,tel'
 * @returns {Promise<Object>} 返回格式:
 * {
 *   code: 0,          // 状态码，0表示成功
 *   data: [           // 配置项数组
 *     {
 *       key: "mallName",    // 配置项键名
 *       value: "摄影展小程序" // 配置项值
 *     }
 *   ]
 * }
 */

/**
 * siteStatistics
 * @description 获取网站统计信息
 * @returns {Promise<Object>} 返回格式:
 * {
 *   code: 0,              // 状态码，0表示成功
 *   data: {
 *     dfs: {
 *       count: 100        // 文件总数
 *     },
 *     cmsArticle: {
 *       numbers: 50,      // 文章总数
 *       views: 5000       // 文章总浏览量
 *     }
 *   }
 * }
 */

/**
 * ========== 用户认证相关接口 ==========
 */

/**
 * checkToken
 * @description 验证用户令牌是否有效
 * @param {string} token - 用户令牌
 * @returns {Promise<Object>} 返回格式:
 * {
 *   code: 0,           // 状态码，0表示token有效
 *   msg: "token有效"   // 验证结果消息
 * }
 */

/**
 * login_wx
 * @description 微信小程序用户登录
 * @param {string} code - 微信登录返回的code
 * @returns {Promise<Object>} 返回格式:
 * {
 *   code: 0,              // 状态码，0表示成功，10000表示需要注册
 *   data: {
 *     token: "用户令牌",   // 用户认证令牌
 *     uid: 123            // 用户ID
 *   }
 * }
 */

/**
 * register_complex
 * @description 用户复杂注册（包含微信用户信息）
 * @param {Object} data - 注册数据
 * @param {string} data.code - 微信登录code
 * @param {string} data.encryptedData - 加密的用户信息
 * @param {string} data.iv - 初始化向量
 * @param {string} data.referrer - 推荐人（可选）
 * @returns {Promise<Object>} 返回格式:
 * {
 *   code: 0,               // 状态码，0表示注册成功
 *   msg: "注册成功"        // 注册结果消息
 * }
 */

/**
 * register_simple
 * @description 用户简单注册
 * @param {Object} data - 注册数据
 * @returns {Promise<Object>} 返回格式:
 * {
 *   code: 0,               // 状态码，0表示注册成功
 *   msg: "注册成功"        // 注册结果消息
 * }
 */

/**
 * userDetail
 * @description 获取用户详细信息
 * @param {string} token - 用户令牌
 * @returns {Promise<Object>} 返回格式:
 * {
 *   code: 0,              // 状态码，0表示成功
 *   data: {
 *     id: 123,            // 用户ID
 *     nick: "用户昵称",    // 用户昵称
 *     avatarUrl: "头像URL", // 用户头像
 *     mobile: "手机号",    // 手机号
 *     email: "邮箱"        // 邮箱
 *   }
 * }
 */

/**
 * ========== CMS内容管理相关接口 ==========
 */

/**
 * cmsCategories
 * @description 获取所有CMS分类列表
 * @returns {Promise<Object>} 返回格式:
 * {
 *   code: 0,            // 状态码，0表示成功
 *   data: [             // 分类列表数组
 *     {
 *       id: 1,               // 分类ID
 *       name: "分类名称",      // 分类名称
 *       pic: "分类图片URL",    // 分类图片
 *       level: 1,            // 分类级别（1=一级分类，2=二级分类）
 *       pid: 0,              // 父分类ID（一级分类为0）
 *       type: "tj",          // 分类类型（"tj"表示推荐分类）
 *       articleCount: 10     // 该分类下的文章数量
 *     }
 *   ]
 * }
 */

/**
 * cmsCategoryDetail
 * @description 获取指定分类的详细信息
 * @param {number} id - 分类ID
 * @returns {Promise<Object>} 返回格式:
 * {
 *   code: 0,                    // 状态码，0表示成功
 *   data: {
 *     id: 1,                   // 分类ID
 *     name: "分类名称",       // 分类名称
 *     description: "分类描述", // 分类描述
 *     pic: "分类图片URL"     // 分类图片
 *   }
 * }
 */

/**
 * cmsArticles
 * @description 获取文章列表
 * @param {Object} data - 查询参数
 * @param {number} data.page - 页码
 * @param {number} data.categoryId - 分类ID（可选）
 * @param {boolean} data.isRecommend - 是否推荐（可选）
 * @returns {Promise<Object>} 返回格式:
 * {
 *   code: 0,            // 状态码，0表示成功
 *   data: [             // 文章列表数组
 *     {
 *       id: 19988,             // 文章ID
 *       title: "文章标题",      // 文章标题
 *       pic: "封面图片URL",     // 封面图片
 *       content: "文章内容",    // 文章内容HTML
 *       categoryId: 1,         // 分类ID
 *       isRecommend: true,     // 是否推荐
 *       createTime: "创建时间", // 创建时间
 *       viewCount: 100         // 浏览次数
 *     }
 *   ]
 * }
 */

/**
 * cmsArticleDetail
 * @description 获取指定文章的详细信息
 * @param {number} id - 文章ID
 * @returns {Promise<Object>} 返回格式:
 * {
 *   code: 0,                    // 状态码，0表示成功
 *   data: {
 *     id: 19988,               // 文章ID
 *     title: "文章标题",        // 文章标题
 *     pic: "封面图片URL",       // 封面图片
 *     content: "文章内容HTML",  // 文章内容（HTML格式）
 *     categoryId: 1,           // 分类ID
 *     createTime: "创建时间",   // 创建时间
 *     viewCount: 100,          // 浏览次数
 *     author: "作者名称"        // 作者
 *   }
 * }
 */

/**
 * cmsPage
 * @description 获取CMS页面内容（如关于我们、使用协议等静态页面）
 * @param {string} key - 页面标识键名
 * @returns {Promise<Object>} 返回格式:
 * {
 *   code: 0,              // 状态码，0表示成功
 *   data: {
 *     info: {
 *       title: "页面标题",    // 页面标题
 *       content: "页面内容"  // 页面内容HTML
 *     }
 *   }
 * }
 */

/**
 * cmsArticleFavPut
 * @description 收藏或取消收藏文章
 * @param {string} token - 用户令牌
 * @param {number} newsId - 文章ID
 * @returns {Promise<Object>} 返回格式:
 * {
 *   code: 0,           // 状态码，0表示成功
 *   msg: "收藏成功"    // 操作结果消息
 * }
 */

/**
 * cmsArticleFavCheck
 * @description 检查用户是否已收藏文章
 * @param {string} token - 用户令牌
 * @param {number} newsId - 文章ID
 * @returns {Promise<Object>} 返回格式:
 * {
 *   code: 0,          // 状态码，0表示已收藏，其他表示未收藏
 *   msg: "success"   // 消息
 * }
 */

/**
 * cmsArticleUseless
 * @description 标记文章是否有用（用户分享时调用，标记为有用）
 * @param {Object} data - 请求数据
 * @param {string} data.token - 用户令牌
 * @param {number} data.id - 文章ID
 * @param {boolean} data.isUseful - 是否有用
 * @returns {Promise<Object>} 返回格式:
 * {
 *   code: 0,          // 状态码，0表示成功
 *   msg: "操作成功"   // 操作结果消息
 * }
 */

/**
 * ========== 评论相关接口 ==========
 */

/**
 * commentList
 * @description 获取评论列表
 * @param {Object} data - 查询参数
 * @param {number} data.refId - 关联ID（文章ID）
 * @param {string} data.st - 状态筛选，'1,2'表示审核通过的评论
 * @returns {Promise<Object>} 返回格式:
 * {
 *   code: 0,         // 状态码，0表示成功
 *   data: [          // 评论列表数组
 *     {
 *       id: 1,                    // 评论ID
 *       content: "评论内容",     // 评论内容
 *       uid: 123,                 // 用户ID
 *       createTime: "创建时间", // 创建时间
 *       praise: 5,                // 点赞数
 *       commentUserInfo: {        // 评论用户信息
 *         avatarUrl: "头像URL",   // 用户头像
 *         nick: "用户昵称",     // 用户昵称
 *         province: "省份",      // 省份
 *         city: "城市"          // 城市
 *       }
 *     }
 *   ]
 * }
 */

/**
 * addComment
 * @description 添加评论
 * @param {Object} data - 评论数据
 * @param {string} data.token - 用户令牌
 * @param {number} data.refId - 关联ID（文章ID）
 * @param {number} data.type - 评论类型，3表示文章评论
 * @param {string} data.content - 评论内容
 * @returns {Promise<Object>} 返回格式:
 * {
 *   code: 0,              // 状态码，0表示成功
 *   msg: "评论提交成功"  // 操作结果消息
 * }
 */

/**
 * ========== 文件上传相关接口 ==========
 */

/**
 * uploadFile
 * @description 上传文件
 * @param {string} token - 用户令牌
 * @param {string} tempFilePath - 临时文件路径
 * @returns {Promise<Object>} 返回格式:
 * {
 *   code: 0,              // 状态码，0表示成功
 *   data: {
 *     url: "文件URL",     // 上传后的文件URL
 *     fileId: "文件ID"    // 文件ID
 *   }
 * }
 */

/**
 * ========== 短信验证相关接口 ==========
 */

/**
 * smsValidateCode
 * @description 发送短信验证码
 * @param {string} mobile - 手机号
 * @param {string} key - 图形验证码key（可选）
 * @param {string} picCode - 图形验证码（可选）
 * @returns {Promise<Object>} 返回格式:
 * {
 *   code: 0,              // 状态码，0表示发送成功
 *   msg: "发送成功"       // 发送结果消息
 * }
 */

/**
 * smsValidateCodeCheck
 * @description 验证短信验证码
 * @param {string} mobile - 手机号
 * @param {string} code - 验证码
 * @returns {Promise<Object>} 返回格式:
 * {
 *   code: 0,              // 状态码，0表示验证成功
 *   msg: "验证成功"       // 验证结果消息
 * }
 */

/**
 * ========== 地图相关接口 ==========
 */

/**
 * mapDistance
 * @description 计算两点间距离
 * @param {number} lat1 - 起点纬度
 * @param {number} lng1 - 起点经度
 * @param {number} lat2 - 终点纬度
 * @param {number} lng2 - 终点经度
 * @returns {Promise<Object>} 返回格式:
 * {
 *   code: 0,              // 状态码，0表示成功
 *   data: {
 *     distance: 1000      // 距离（米）
 *   }
 * }
 */

/**
 * ========== 支付相关接口 ==========
 */

/**
 * wxpay
 * @description 微信小程序支付
 * @param {Object} data - 支付数据
 * @param {string} data.token - 用户令牌
 * @param {number} data.money - 支付金额
 * @param {string} data.remark - 支付备注
 * @returns {Promise<Object>} 返回格式:
 * {
 *   code: 0,              // 状态码，0表示成功
 *   data: {
 *     timeStamp: "时间戳",
 *     nonceStr: "随机字符串",
 *     package: "预支付交易会话标识",
 *     signType: "签名方式",
 *     paySign: "签名"
 *   }
 * }
 */

/**
 * ========== 模板消息相关接口 ==========
 */

/**
 * addTempleMsgFormid
 * @description 添加模板消息FormID
 * @param {string} token - 用户令牌
 * @param {string} type - 消息类型
 * @param {string} formId - FormID
 * @returns {Promise<Object>} 返回格式:
 * {
 *   code: 0,              // 状态码，0表示成功
 *   msg: "添加成功"       // 操作结果消息
 * }
 */

/**
 * sendTempleMsg
 * @description 发送模板消息
 * @param {Object} data - 消息数据
 * @returns {Promise<Object>} 返回格式:
 * {
 *   code: 0,              // 状态码，0表示发送成功
 *   msg: "发送成功"       // 发送结果消息
 * }
 */

/**
 * ========== 通用工具接口 ==========
 */

/**
 * request
 * @description 通用HTTP请求方法
 * @param {string} url - 请求URL
 * @param {boolean} needSubDomain - 是否需要子域名
 * @param {string} method - 请求方法 (GET/POST)
 * @param {Object} data - 请求数据
 * @returns {Promise<Object>} 返回API响应数据
 */

/**
 * init
 * @description 初始化API域名配置
 * @param {string} subDomain - 子域名
 */

/**
 * init2
 * @description 初始化API完整配置
 * @param {string} apiBaseUrl - API基础URL
 * @param {string} subDomain - 子域名
 */

/**
 * ========== 数据类型说明 ==========
 */

/**
 * 通用响应格式
 * @typedef {Object} ApiResponse
 * @property {number} code - 状态码，0表示成功，其他表示失败
 * @property {string} msg - 消息描述
 * @property {*} data - 响应数据（成功时包含）
 */

/**
 * 分页参数
 * @typedef {Object} PageParams
 * @property {number} page - 页码，从1开始
 * @property {number} pageSize - 每页数量，默认10
 */

/**
 * 用户令牌
 * @typedef {string} Token - 用户认证令牌，通过登录接口获取
 */

/**
 * 错误码说明
 * - 0: 成功
 * - 10000: 需要注册
 * - 其他非0值: 各种错误情况
 */

// 注意：这个文件是对原webpack打包文件的接口说明，实际使用时仍需引用原index.js文件
module.exports = {
  // 此文件仅用于接口说明，不包含实际实现
  // 实际使用请引用: const WXAPI = require('apifm-wxapi')
};